package org.wu.framework.lazy.orm.database.lambda.stream.condition.update;


import org.wu.framework.lazy.orm.database.lambda.stream.condition.ParadigmTClassCondition;

import java.util.concurrent.ConcurrentHashMap;

/**
 * describe : 更新set Value 选择器
 *
 * @author : Jia wei Wu
 * @version 1.0
 * @date : 2022/7/9 16:52
 */
public interface SetValueBasicComparison<T, R, V, C extends SetValueBasicComparison<T, R, V, C> > extends ParadigmTClassCondition<T> {

    /**
     * 设置数据
     *
     * @param condition 判断条件
     * @param row       数据行
     * @param value     数据
     * @return 当前对象
     */
    C set(boolean condition, R row, V value);
    /**
     * 设置数据
     *
     * @param row   数据行
     * @param value 数据
     * @return 当前对象
     */
    C set(R row, V value);


    /**
     * 设置数据忽略空
     *
     * @param row   数据行
     * @param value 数据
     * @return 当前对象
     */
    C setIgnoreEmpty(R row, V value);

    /**
     * 设置数据
     *
     * @param condition 判断条件
     * @param rowName   数据行
     * @param value     数据
     * @return 当前对象
     */
    C set(boolean condition, String rowName, V value);
    /**
     * 设置数据
     *
     * @param rowName 数据行
     * @param value   数据
     * @return 当前对象
     */
    C set(String rowName, V value);



    /**
     * 设置数据忽略空
     *
     * @param rowName 数据行
     * @param value   数据
     * @return 当前对象
     */
    C setIgnoreEmpty(String rowName, V value);


    /**
     * 设置表达式
     * @param row 数据行
     * @param value 表达式
     * @return 当前对象
     */
    C setExpression(R row, V value);

    /**
     * 设置表达式
     * @param rowName 数据行
     * @param value 表达式
     * @return 当前对象
     */
    C setExpression(String rowName, V value);


    /**
     * 获取 set value 数据
     * @return set value 数据
     */
    ConcurrentHashMap<String,Object> setValue();
}
